using System;
using ns27;
using Triton.Game.Mono;

namespace Triton.Game.Mapping
{
	[Attribute38("BnetPresenceMgr")]
	public class BnetPresenceMgr : MonoClass
	{
		public BnetPlayer m_myPlayer => method_3<BnetPlayer>("m_myPlayer");

		public BnetPresenceMgr(IntPtr address, string className)
			: base(address, className)
		{
		}

		public BnetPresenceMgr(IntPtr address)
			: this(address, "BnetPresenceMgr")
		{
		}

		public static BnetPresenceMgr Get()
		{
			return MonoClass.smethod_15<BnetPresenceMgr>(TritonHs.MainAssemblyPath, "", "BnetPresenceMgr", "Get", Array.Empty<object>());
		}

		public void Initialize()
		{
			method_8("Initialize");
		}

		public void Shutdown()
		{
			method_8("Shutdown");
		}

		public BnetPlayer GetMyPlayer()
		{
			return method_14<BnetPlayer>("GetMyPlayer", Array.Empty<object>());
		}

		public bool SetGameField(uint fieldId, bool val)
		{
			return method_10<bool>("SetGameField", new Class276.Enum20[2]
			{
				Class276.Enum20.U4,
				Class276.Enum20.Boolean
			}, new object[2] { fieldId, val });
		}

		public bool SetGameField(uint fieldId, int val)
		{
			return method_10<bool>("SetGameField", new Class276.Enum20[2]
			{
				Class276.Enum20.U4,
				Class276.Enum20.I4
			}, new object[2] { fieldId, val });
		}

		public bool SetGameField(uint fieldId, string val)
		{
			return method_10<bool>("SetGameField", new Class276.Enum20[2]
			{
				Class276.Enum20.U4,
				Class276.Enum20.String
			}, new object[2] { fieldId, val });
		}

		public void CacheMyself(BnetGameAccount gameAccount, BnetPlayer player)
		{
			method_8("CacheMyself", gameAccount, player);
		}

		public void AddChangedPlayer(BnetPlayer player, BnetPlayerChangelist changelist)
		{
			method_8("AddChangedPlayer", player, changelist);
		}

		public void FirePlayersChangedEvent(BnetPlayerChangelist changelist)
		{
			method_8("FirePlayersChangedEvent", changelist);
		}

		public BnetPlayerChangelist ChangeGameField(BnetGameAccount hsGameAccount, uint fieldId, object val)
		{
			return method_14<BnetPlayerChangelist>("ChangeGameField", new object[3] { hsGameAccount, fieldId, val });
		}

		public void Cheat_SetMyPlayer(BnetPlayer player)
		{
			method_8("Cheat_SetMyPlayer", player);
		}

		public bool Cheat_AddAccount(BnetAccount account)
		{
			return method_11<bool>("Cheat_AddAccount", new object[1] { account });
		}

		public bool Cheat_AddGameAccount(BnetGameAccount gameAccount)
		{
			return method_11<bool>("Cheat_AddGameAccount", new object[1] { gameAccount });
		}

		public bool Cheat_AddPlayer(BnetPlayer player)
		{
			return method_11<bool>("Cheat_AddPlayer", new object[1] { player });
		}
	}
}
